package com.hanson.basicknowledge.ReflectionDemo;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

/**
 * @author Hanson
 * @date 2023/2/24 17:00
 */
public class ReflectionDemo {

    public static void main(String[] args) throws Exception{
        // 获取Person类的class对象
        Class<?> personClass = Class.forName("com.hanson.basicknowledge.ReflectionDemo.Person");

        // 获取Person类的构造方法
        Constructor<?> constructor = personClass.getConstructor(String.class, int.class);

        // 使用构造方法创建Person对象
        Object person = constructor.newInstance("Hanson", 26);

        // 获取Person类的getName方法
        Method getNameMethod = personClass.getMethod("getName");

        // 调用getName方法并输出结果
        String name = (String) getNameMethod.invoke(person);
        System.out.println("name: "+name);

        // 获取Person类中的getAge方法
        Method getAgeMethod = personClass.getMethod("getAge");

        // 调用getAge方法并输出结果
        int age = (int) getAgeMethod.invoke(person);
        System.out.println("age: "+age);

        // 获取Person类中的sayHello方法
        Method sayHelloMethod = personClass.getMethod("sayHello");

        // 调用sayHello方法
        sayHelloMethod.invoke(person);

    }
}
